package com.candy.exp;

/**
 * 异常处理
 */
public class Test01 {

    public static void main(String[] args) throws ClassNotFoundException{
        test03();
    }

    /**
     * throw手动制造异常。一般用于方法之间的通信处理
     */
    public static void test04() {
        int num_01=6;
        if(num_01==6){
            throw new NullPointerException();
        }
    }

    /**
     * 异常可以向上抛出，throws 异常类型
     * 由上层调用者进行处理
     * 若一直向上抛出，最后是由JVM进行处理
     */
    public static void test03() {
       try{
           test02();
       }catch (ClassNotFoundException e){
           System.out.println("实例化的类未找到");
       }
    }

    public static void test02() throws ClassNotFoundException {
        Class.forName("");

    }

    /**
     * 异常处理之捕获
     * 语法：try{可能发生异常的语句块
     * }catch（异常类型 异常名字）{出现对应异常的解决方法的代码}
     * finally{无论是否发生异常都会执行的代码}
     */
    public static void test01() {
        try{
            int num_01=6;
            int num_02=2;
//        运行时异常（非检查性异常）
            System.out.println(num_01/num_02);//ArithmeticException分母不能为0异常
//        编译时异常（检查性异常）
            Class.forName("");
        }catch (ArithmeticException e){
            System.out.println("分母不能为0");
        }catch (ClassNotFoundException e){
            System.out.println("该类不存在");
        }catch (Exception e){
            System.out.println("~");
        }finally {
            System.out.println("无论程序是否发生异常都会执行的代码块");
        }



    }
}
